Software defined storage (SDS) systems provide a storage infrastructure that is managed by software. SDS also systems come in a variety of configurations and can be deployed in different environments. SDS systems can be implemented for direct attached storage (DAS) devices, cloud-based storage, network attached storage (NAS), or the like. Examples of SDS systems include, but are not limited to, EMC Elastic Cloud Storage (ECS), EMC SCALEIO, and EMC ISILON. Each of these systems may be implemented in different computing environments and each has a different approach to storing data.
SDS systems provide scalable storage for structured and unstructured data and can be optimized to take advantage of hardware efficiencies. SDS systems for cloud-based storage (whether public or private) may be configured differently from SDS systems for NAS storage or DAS storage. SDS systems and/or the associated storage can also be virtualized.
Notwithstanding these advantages, SDS systems can still be improved. For example, when new or additional storage is required in an SDS system, the storage is manually added to the SDS system. Additional storage is added manually because the nature of each storage system is often unique. SDS systems, for example, may be block based, file based, or object based. Thus, in order to add resources to an SDS system, it is necessary to know that there is a capacity problem, understand the type of storage needed, and manually provision the the new capacity. The manual nature of this task may prevent sufficient new resources from being allocated and require the process to be repeated. In addition, the manual addition of capacity may not account for capacity that can be released and re-provisioned. This can lead to situations where an entity bears the cost of too much storage. Systems and methods are needed to improve the performance of SDS systems and to automatically add or remove capacity in a distributed storage or hyperconverged environment.